types of constructors in python